package LeetCode;

import java.util.HashMap;

/**
 * @Author by KoVaVo
 * @Date 2021-01-31 13:15
 *
 * 两数之和的Demo
 * 示例：
 * 输入：nums = [2,7,11,15], target = 9
 * 输出：[0,1]
 * 解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/two-sum
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class SumOfTwoNumbers {
    public static int[] twoSum(int[] nums, int target) {
        int tar = target;
        HashMap<Integer, Integer> map = new HashMap();
        for (int i = 0; i < nums.length; i++) {
            if(map.containsKey(target-nums[i])){
                return new int[]{
                        map.get(target-nums[i]),i
                };
            }
            map.put(nums[i],i);
        }
        throw  new IllegalArgumentException("不存在target目标数组中的两数之和");
    }

    /**
     * 查找某一个值所在的索引
     * @param arr
     * @param number
     * @return
     */
    public static int Seek(int[] arr,int number){
        for (int index = 0;index<arr.length;index++) {
            if (arr[index] == number) {
                //找到数值，返回索引
                return index;
            }
            //没找到数值，返回-1
        }return -1;
    }

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
        int [] intNum= new int[5];
        for (int i = 0; i < intNum.length; i++) {
            intNum[i] = i;
        }
        int[] ints = twoSum(intNum, 5);
        System.out.println(Seek(ints,ints[0])+","+Seek(ints,ints[1]));
        //输出：0,1
    }
}


